package com.hospital.hospitalserver.mapper;

import com.hospital.hospitalserver.entity.*;
import com.hospital.hospitalserver.entity.ScheduleAIRequest;
import com.hospital.hospitalserver.entity.Vo.ScheduleTemplateDataStatus;
import com.hospital.hospitalserver.util.Pager;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 排班功能模板方法定义
 * e4glet
 * 2025年9月26日
 * */
@Mapper
public interface ScheduleMapper {
    /**
     * 人员类型定义表信息
     * */
    List<StaffTypeInfo> getStaffTypeList();

    /**
     * 班次时间定义表信息
     * */
    List<TimeSlotInfo> getTimeSlotList();

    /**
     * 排班类型定义表信息
     * */
    List<ScheduleTypeInfo> getScheduleTypeList();

    /**
     * 添加排班模板
     * */
    Integer addScheduleTemplate(ScheduleTemplate scheduleTemplate);

    /**
     * 编辑排班模板
     * */
    Integer editScheduleTemplate(ScheduleTemplate scheduleTemplate);

    /**
     * 删除排班模板
     * */
    Integer deleteScheduleTemplate(ScheduleTemplate scheduleTemplate);


    /**
     * 排班模板分页功能
     * 获取排班数据总数
     * */
    Integer getScheduleTemplateCountsBySearch(Pager pager);

    /**
     * 排班模板分页功能
     * 获取排班模板的分页数据
     * */
    List<ScheduleTemplate> getScheduleTemplateMapperDataBySearch(Pager pager);

    /**
     * 获取排班模板列表数据用于排班
     * */
    List<ScheduleTemplate> getScheduleTemplateList();

    /**
     * 根据AI工作流分析的关键词查询排班模板数据
     * */
    List<ScheduleTemplate> queryScheduleTemplate(ScheduleAIRequest request);

    /**
     * 统计排班模板数据
     * */
    ScheduleTemplateDataStatus getScheduleTemplateDataStatus();
}
